package com.br.util;

import java.sql.Connection;
import javax.naming.InitialContext;
import javax.sql.DataSource;

/**
 * Esta classe implementa uma fonte de conexões baseada no contêiner.
 * @author Leandro Luque
 * @version 1.0
 */
public class FonteConexoes {

    /**
     * Nome do contexto.
     */
    protected static final String CONTEXTO = "jdbc/hermesweb";

    /**
     * Recupera a fonte de dados associada ao contexto.
     * @return a fonte de dados.
     * @throws Exception caso ocorra algum erro.
     */
    protected DataSource getDataSource() throws Exception {
        return((DataSource) InitialContext.doLookup("java:comp/env/" + CONTEXTO));
    }

    /**
     * Retorna uma conexão da fonte de conexões.
     * @return uma conexão da fonte.
     * @throws Exception caso ocorra algum erro.
     */
    public synchronized Connection getConnection() throws Exception {
        return(getDataSource().getConnection());
    }

    /**
     * Libera uma conexão, devolvendo à fonte.
     * @param connection a conexão que deve ser devolvida a fonte.
     * @throws Exception caso ocorra algum erro.
     */
    public synchronized void free(Connection connection) throws Exception {
        connection.close();
    }    

}
